package com.huike.report.service;

import java.time.LocalDate;
import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.vo.SubjectVo;
import com.huike.report.domain.vo.ActivityStatisticsVo;
import com.huike.report.domain.vo.LineChartVO;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

import com.huike.report.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import com.huike.contract.domain.TbContract;

public interface IReportService {
    /**
     * 线索统计每天时间列表
     */
    LineChartVO getCluesStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 客户统计时间列表
     */
    LineChartVO getontractStatistics(String beginCreateTime, String endTime);
    /**
     * 学科客户分布
     * @param beginCreateTime
     * @param endTime
     * @return
     */
    List<SubjectVo> getSubjectStatistics(String beginCreateTime, String endTime);
    /**
     * 渠道统计饼图
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> chanelStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 活动统计饼图
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> activityStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 漏斗统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    VulnerabilityMapVo getVulnerabilityMap(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 渠道统计报表
     * @param tbActivity
     * @return
     */
    List<ActivityStatisticsVo> activityStatisticsList(TbActivity tbActivity);
    /**
     *销售统计时间列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVO salesStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 部门统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> deptStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 销售统计报表归属人
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> ownerShipStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 销售统计报表--归属渠道
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> channelStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);

    IndexVo indexTodoInfo(LocalDate beginCreateTime,LocalDate endCreateTime);


    List<TopVo> salesStatistic(LocalDate beginCreateTime, LocalDate endCreateTime, Integer deptId);

    List<TopVo> businessChangeStatistics(LocalDate beginCreateTime, LocalDate endCreateTime, Integer deptId);
}
